<?php
class EjerciciosController extends AppController {
	var $name = 'Ejercicios';
   var $appModule = 'Maestros';
    var $appModule = 'Maestros';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList');
    var $uses  = array('Ejercicio');
    var $components = array('Formating');

	function index() {
            $q = $this->getBusqueda($this->data['Ejercicios']['busqueda']);
            $this->set('q', $q);
            $conditions['Ejercicio.empresa_id'] = $this->empresaId();
            $conditions['Ejercicio.activo'] = 1;
            if (!empty($q))
                $conditions['OR'] = array(
                    'Ejercicio.codigo SIMILAR TO'=>$q,
                    'Ejercicio.descripcion SIMILAR TO'=>"%$q%"
                );
            $this->paginate['Ejercicio'] = array(
                'conditions'=>$conditions,
                'order'=>'codigo desc'
            );
            $data = $this->paginate('Ejercicio');
            $this->set('ejercicios', $data);
            $this->set('limite', $this->limite);
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Ejercicio invalido.', true));
			$this->redirect(array('action'=>'index'));
		}

		$this->set('ejercicio', $this->Ejercicio->find('first', array(
                    'conditions'=>array('Ejercicio.id'=>$id),
                    'contain'=>array()
                )));
	}

	function add() {
		if (!empty($this->data)) {
                        $this->data['Ejercicio']['empresa_id'] = $this->empresaId();
                        $this->data['Ejercicio']['activo'] = 1;
                        $this->data['Ejercicio']['usuario_creacion_id'] = $this->usuarioId();
                        $this->data['Ejercicio']['fecha_creacion'] = 'now()';

			$this->Ejercicio->create();
			if ($this->Ejercicio->save($this->data)) {
				$this->Session->setFlash(__('El Ejercicio ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Ejercicio no ha podido ser guardado. Intente nuevamente..', true));
			}
		}
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Ejercicio Invalido', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
                        $this->data['Ejercicio']['usuario_modificacion_id'] = $this->usuarioId();
                        $this->data['Ejercicio']['fecha_modificacion'] = 'now()';
			if ($this->Ejercicio->save($this->data)) {
				$this->Session->setFlash(__('El Ejercicio ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Ejercicio no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		if (empty($this->data)) {
                        $this->Ejercicio->recursive = -1;
			$this->data = $this->Ejercicio->read(null, $id);
			$this->data['Ejercicio']['fecha_inicial'] = $this->Formating->fecha($this->data['Ejercicio']['fecha_inicial']);
			$this->data['Ejercicio']['fecha_final'] = $this->Formating->fecha($this->data['Ejercicio']['fecha_final']);
                        if ($this->data['Ejercicio']['cerrado']){
                            $this->Session->setFlash('No es posible modificar Ejercicio cerrado',
                                    array('action'=>'index'));
                        }
		}
	}

	function delete($id = null, $verbose = true) {
                if (!$id) {
                    if ($verbose){
                        $this->Session->setFlash(__('Id de Ejercicio invalido', true));
                        $this->redirect(array('action'=>'index'));
                    }
                    else return false;
                }
                $this->Ejercicio->recursive = -1;
                $data = $this->Ejercicio->read(null, $id);
                $data['Ejercicio']['activo']=0;
                $data['Ejercicio']['usuario_borrado_id']=$this->usuarioId();
                $data['Ejercicio']['fecha_borrado']='now()';
                if ($data['Ejercicio']['cerrado']){
                    if (!$verbose)
                        $this->Session->setFlash('No es posible modificar Ejercicio cerrado',
                                array('action'=>'index'));
                    else return false;
                }

                if (!$this->Ejercicio->save($data) && !verbose)
                        return false;
                if ($verbose){
                    $this->Session->setFlash(__('Ejercicio eliminado', true));
                    $this->redirect(array('action'=>'index'));
                }
                else return true;
	}

        function process(){// procesa anulaciones y eliminaciones en bloque
            $op = isset($this->params['form']['delete'])?'eliminar':'anular';
            $flag = true;
            $i = 0;
            foreach($this->data as $item){
                if ($item['id']!='0'){
                    if(isset($this->params['form']['delete'])){ // eliminar
                        $flag = $this->delete($item['Ejercicio']['id'], false);
                    }
                    if (!$flag){
                        $data = $this->Ejercicio->read(null, $item['Ejercicio']['id']);
                        $this->Session->setFlash(__("Se ha producido un error al $op el Ejercicio #".$data['Ejercicio']['codigo'], true));
                        break;
                    }
                }
                $i++;
            }
            if ($flag && $i > 0){
                $this->Session->setFlash(__("El proceso de $op Ejercicios se ha realizado con exito.", true));
            }
            $this->redirect(array('action'=>'index'));
        }

}
?>